package API.File.Practise;

import java.io.File;

import static API.File.Practise.MainFile.mainDirPath;

public class _4DeleteMultiLevelFolder {
    public static void main(String[] args) {
        File file = new File(mainDirPath);
        deleteFolder(file);
    }

    // 思路: 先递归删除一个分支中的所有空文件夹和文件，再删除剩下的文件夹
    public static void deleteFolder(File file) {
        if(!file.isFile()) {
            File[] files = file.listFiles();
            if(files.length != 0) {
                for (int i = 0; i < files.length; i++) {
                    deleteFolder(files[i]);
                }
                // 删除存在多个文件夹或文件的文件夹并打印
                System.out.println(file.getAbsoluteFile());
                file.delete();
            } else {
                // 删除内部没有内容的文件夹或文件并打印
                System.out.println(file.getAbsoluteFile());
                file.delete();
            }
        } else {
            // 如果指向路径是文件, 则删除文件
            System.out.println(file.getAbsoluteFile());
            file.delete();
        }
    }

    public static void noNote(File file) {
        if(!file.isFile()) {
            File[] files = file.listFiles();
            if(files.length != 0) {
                for (int i = 0; i < files.length; i++) {
                    deleteFolder(files[i]);
                }
                file.delete();
            } else {
                file.delete();
            }
        } else {
            file.delete();
        }
    }

    public static void latest(File file) {
        File[] files = file.listFiles();
        for (int i = 0; i < files.length; i++) {
            if(files[i].isFile()) {
                files[i].delete();
            } else if (files[i].isDirectory()) {
                latest(files[i]);
            }
        }
        file.delete();
    }
}
